﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Media;
using System.Windows.Shapes;
using ZaidimasSandelys.Models.DataStructures;

namespace ZaidimasSandelys.CustomDrawTools
{
    public class OuterSpaceVisual : AllocatedVisual
    {
        public OuterSpaceVisual(short x, short y): base(x, y, VisualType.OuterSpace)
        {
            this.CanMove = false;
        }

        public override void DrawItself(Size multiplicator)
        {
#if DEBUG
            this.Dispatcher.VerifyAccess();
#endif
            DrawItself(multiplicator, GetBitmapBrush("space.png"), new Pen(Brushes.Gray, 1));
        }
    }

    public class WallVisual : AllocatedVisual
    {
        public WallVisual(short x, short y): base(x, y, VisualType.Wall)
        {
            this.CanMove = false;
        }

        public override void DrawItself(Size multiplicator)
        {
#if DEBUG
            this.Dispatcher.VerifyAccess();
#endif
            DrawItself(multiplicator, GetBitmapBrush("wall.png"), new Pen(Brushes.Gray, 1));
        }
    }

    public class FloorVisual : AllocatedVisual
    {
        public FloorVisual(short x, short y) : base(x, y, VisualType.Floor)
        {
            this.CanMove = false;
        }

        public override void DrawItself(Size multiplicator)
        {
#if DEBUG
            this.Dispatcher.VerifyAccess();
#endif
            DrawItself(multiplicator, GetBitmapBrush("floor.png"), new Pen(Brushes.Gray, 1));
        }
    }

    public class TargetVisual : AllocatedVisual
    {
        public TargetVisual(short x, short y) : base(x, y, VisualType.Target)
        {
            this.CanMove = false;
        }

        public override void DrawItself(Size multiplicator)
        {
#if DEBUG
            this.Dispatcher.VerifyAccess();
#endif
            DrawItself(multiplicator, GetBitmapBrush("goal.png"), new Pen(Brushes.Gray, 1));
        }
    }

    public class TargetHcVisual : AllocatedVisual
    {
        public TargetHcVisual(short x, short y) : base(x, y, VisualType.TargetHC)
        {
            this.CanMove = false;
        }

        public override void DrawItself(Size multiplicator)
        {
#if DEBUG
            this.Dispatcher.VerifyAccess();
#endif
            DrawItself(multiplicator, GetBitmapBrush("goal-metal.png"), new Pen(Brushes.Gray, 1));
        }
    }


}
